﻿ 
namespace Core.Items.Modules
{
    /*

		MetaGroup                      = ElectronicEquipment
		Group                          = RangeExtenders
		Module                         = niani range extender
		CpuUsage                       = 42.00 TF
		ReactorUsage                   = 121.00 RP
		Type                           = Passive
		Slot                           = Head
		TechnologicalLevel             = T3-
		Mass                           = 45.00 kg
		PackedVolume                   = 0.05 U
		Volume                         = 0.10 U
		OptimalRangeModifier           = 13 %
    */

    using System;
    using Base;
    using Contracts.Enums;
    using Contracts.Interfaces;
    using Extensions;
    using Features;
    
    /// <summary>
    /// Niani range extender module class
    /// </summary>
    /// <remarks>File generated on 31/10/2011 16:00:54</remarks>
    public sealed class NianiRangeExtender : ModuleBase
    {
        /// <summary>
        /// Create a new instance of the <see cref="NianiRangeExtender"/> class.
        /// </summary>
        public NianiRangeExtender()
            : base(
            "Niani range extender",
            "",
            ModuleMetaGroupsEnum.ElectronicEquipment,
            ModuleGroupsEnum.RangeExtenders,
            TechnologyLevelsEnum.Niani,
            SizesEnum.Small,
            new LazyFeature[] { 
				new LazyFeature(typeof(CpuUsage<double>),42.00),
				new LazyFeature(typeof(ReactorUsage<double>),121.00),
				new LazyFeature(typeof(ModuleMass<double>),45.00), },
            null,
            new IModifier[] { 
				new Modifier( FeatureTypesEnum.Robot, FeaturesEnum.RobotMass, 45.00 ){ IsVisible = false },
				new Modifier( FeatureTypesEnum.Module, FeaturesEnum.SmallMagneticWeaponOptimal, 0.13 ){ Unit = UnitsEnum.Percentage, DisplayName = "Small Magnetic weapon optimal" },
				new Modifier( FeatureTypesEnum.Module, FeaturesEnum.MediumMagneticWeaponOptimal, 0.13 ){ Unit = UnitsEnum.Percentage, DisplayName = "Medium Magnetic weapon optimal" },
				new Modifier( FeatureTypesEnum.Module, FeaturesEnum.SmallFirearmOptimal, 0.13 ){ Unit = UnitsEnum.Percentage, DisplayName = "Small Firearm optimal" },
				new Modifier( FeatureTypesEnum.Module, FeaturesEnum.MediumFirearmOptimal, 0.13 ){ Unit = UnitsEnum.Percentage, DisplayName = "Medium Firearm optimal" },
				new Modifier( FeatureTypesEnum.Module, FeaturesEnum.SmallLaserOptimal, 0.13 ){ Unit = UnitsEnum.Percentage, DisplayName = "Small Laser optimal" },
				new Modifier( FeatureTypesEnum.Module, FeaturesEnum.MediumLaserOptimal, 0.13 ){ Unit = UnitsEnum.Percentage, DisplayName = "Medium Laser optimal" },
                new Modifier( FeatureTypesEnum.Module, FeaturesEnum.EcmOptimal, 0.13 ){ Unit = UnitsEnum.Percentage, DisplayName = "ECM optimal" },
                new Modifier( FeatureTypesEnum.Module, FeaturesEnum.CargoScannerOptimal, 0.13 ){ Unit = UnitsEnum.Percentage, DisplayName = "Cargo Scanner optimal" },
                new Modifier( FeatureTypesEnum.Module, FeaturesEnum.ChassisScannerOptimal, 0.13 ){ Unit = UnitsEnum.Percentage, DisplayName = "Chassis Scanner optimal" },
                new Modifier( FeatureTypesEnum.Module, FeaturesEnum.RemoteArmorRepairOptimal, 0.13 ){ Unit = UnitsEnum.Percentage, DisplayName = "Remote Armor Repair optimal" },
                new Modifier( FeatureTypesEnum.Module, FeaturesEnum.RemoteSensorAmplifierOptimal, 0.13 ){ Unit = UnitsEnum.Percentage, DisplayName = "Remote Sensor Amplifier optimal" },
                new Modifier( FeatureTypesEnum.Module, FeaturesEnum.EnergyNeutralizerOptimal, 0.13 ){ Unit = UnitsEnum.Percentage, DisplayName = "Energy Neutralizer Optimal" },
                new Modifier( FeatureTypesEnum.Module, FeaturesEnum.EnergyDrainerOptimal, 0.13 ){ Unit = UnitsEnum.Percentage, DisplayName = "Energy Drainer Optimal" },
				new Modifier( FeatureTypesEnum.Module, FeaturesEnum.EnergyTransfererOptimal, 0.13 ){ Unit = UnitsEnum.Percentage, DisplayName = "Energy Transferer Optimal" },
                new Modifier( FeatureTypesEnum.Module, FeaturesEnum.MinerOptimal, 0.13 ){ Unit = UnitsEnum.Percentage, DisplayName = "Miner Optimal" },
                new Modifier( FeatureTypesEnum.Module, FeaturesEnum.HarvesterOptimal, 0.13 ){ Unit = UnitsEnum.Percentage, DisplayName = "Harvester Optimal" },
                new Modifier( FeatureTypesEnum.Ammo, FeaturesEnum.MissileOptimal, 0.13 ){ Unit = UnitsEnum.Percentage, DisplayName = "Missile optimal" }, } )
        {
        }

        /// <summary>
        /// Obtains the activation type
        /// </summary>
        public override ModuleActivationTypesEnum ActivationType
        {
            get { return ModuleActivationTypesEnum.Passive; }
        }
        /// <summary>
        /// Obtains the module slot group 
        /// </summary>
        public override SlotGroupsEnum SlotGroup
        {
            get { return SlotGroupsEnum.Head; }
        }
        /// <summary>
        /// Obtains the module slot type 
        /// </summary>
        public override SlotTypesEnum SlotType
        {
            get { return SlotTypesEnum.Modules; }
        }
    }
}